package com.sg.service.biz.dataassets.impl;

import com.sg.common.util.RedisUtil;
import com.sg.dto.biz.dataassets.req.ImplementSubjectLifeCycleJudgeComReqDto;
import com.sg.dto.biz.dataassets.res.ImplementSubjectLifeCycleJudgeComRespDto;
import com.wicket.okrdataassets.common.exception.BizException;
import org.apache.skywalking.apm.toolkit.trace.Tag;
import org.apache.skywalking.apm.toolkit.trace.Tags;
import org.apache.skywalking.apm.toolkit.trace.Trace;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;

/**
 * @author ：
 * @version 1.0
 * @date ：
 */
@Service
public class UnstructuredResourcesServiceImpl
        implements com.wicket.okrdataassets.biz.service.UnstructuredResourcesService {

    @Resource
    private RedisUtil redisUtil;

    /**
     * D8执行生命周期判断(公共)[10346]
     * gen by moon at 11/18/2024, 10:07:56 AM
     */
    @Trace(operationName = "D8执行生命周期判断(公共)")
    @Tags({@Tag(key = "参数", value = "arg[0]"),
            @Tag(key = "返回值", value = "returnedObj")})
    @Transactional(rollbackFor = Exception.class)
    @Override
    public ImplementSubjectLifeCycleJudgeComRespDto implementSubjectLifeCycleJudgeCom(ImplementSubjectLifeCycleJudgeComReqDto reqDto) {


        if ((reqDto != null && reqDto.getLifecyCycleOperationType() != null && reqDto.getLifecyCycleOperationType().equals("DELETE"))) {
            //if(D8执行生命周期判断(公共).生命周期操作类型 等于 草稿删除)  73417

            if ((reqDto != null && reqDto.getSubjectLifeCycle() != null && reqDto.getSubjectLifeCycle().equals("CURRENTLY_VALID") || reqDto != null && reqDto.getSubjectLifeCycle() != null && reqDto.getSubjectLifeCycle().equals("ARCHIVING") || reqDto != null && reqDto.getIsValid() != null && reqDto.getIsValid().equals("TRUE"))) {
                //if((D8执行生命周期判断(公共).主体生命周期 等于 当前有效 or D8执行生命周期判断(公共).主体生命周期 等于 历史存档 or D8执行生命周期判断(公共).是否作废 等于 是))  73425

//异常结束 73428
                throw new BizException("3R300100515", "对不起，专辑已发布无法删除~", false);
            }
        } else if ((reqDto != null && reqDto.getLifecyCycleOperationType() != null && reqDto.getLifecyCycleOperationType().equals("ACHIVE"))) {
            //elseif(D8执行生命周期判断(公共).生命周期操作类型 等于 存档)  73418

            if ((reqDto != null && reqDto.getSubjectLifeCycle() != null && reqDto.getSubjectLifeCycle().equals("EDITING") || reqDto != null && reqDto.getSubjectLifeCycle() != null && reqDto.getSubjectLifeCycle().equals("ARCHIVING") || reqDto != null && reqDto.getIsValid() != null && reqDto.getIsValid().equals("TRUE"))) {
                //if((D8执行生命周期判断(公共).主体生命周期 等于 正在编辑 or D8执行生命周期判断(公共).主体生命周期 等于 历史存档 or D8执行生命周期判断(公共).是否作废 等于 是))  73430

//异常结束 73434
                throw new BizException("3R300100516", "对不起，存档状态条件不满足~", false);
            }
        } else if ((reqDto != null && reqDto.getLifecyCycleOperationType() != null && reqDto.getLifecyCycleOperationType().equals("INVALIDATE"))) {
            //elseif(D8执行生命周期判断(公共).生命周期操作类型 等于 作废)  73419

            if ((reqDto != null && reqDto.getSubjectLifeCycle() != null && reqDto.getSubjectLifeCycle().equals("EDITING") || reqDto != null && reqDto.getIsValid() != null && reqDto.getIsValid().equals("TRUE"))) {
                //if((D8执行生命周期判断(公共).主体生命周期 等于 正在编辑 or D8执行生命周期判断(公共).是否作废 等于 是))  73436

//异常结束 73437
                throw new BizException("3R300100517", "对不起，作废状态条件不满足~", false);
            }
        } else if ((reqDto != null && reqDto.getLifecyCycleOperationType() != null && reqDto.getLifecyCycleOperationType().equals("RECYLE_DELETE"))) {
            //elseif(D8执行生命周期判断(公共).生命周期操作类型 等于 回收站删除)  73438

            if ((reqDto != null && reqDto.getSubjectLifeCycle() != null && reqDto.getSubjectLifeCycle().equals("EDITING") || reqDto != null && reqDto.getIsValid() != null && reqDto.getIsValid().equals("FALSE"))) {
                //if((D8执行生命周期判断(公共).主体生命周期 等于 正在编辑 or D8执行生命周期判断(公共).是否作废 等于 否))  73440

//异常结束 73441
                throw new BizException("3R300100518", "对不起，回收站删除状态条件不满足~", false);
            }
        } else {
            //else  73422

//异常结束 73423
            throw new BizException("3R300100519", "对不起，非结构化资源状态判断场景有误，请联系管理员~", false);
        }
        ImplementSubjectLifeCycleJudgeComRespDto retData = new ImplementSubjectLifeCycleJudgeComRespDto();


        return retData;
    }
    //
}
